﻿/*
版权所有：版权所有(C) 2011，刘建新
文件编号：M01_CouponBll.cs
文件名称：CouponBll.cs
系统编号：Z0003007
系统名称：通用办公系统
模块编号：M01
模块名称：信息发布
设计文档：IOA_M01信息发布XDE建模.mdx
完成日期：2011-6-11
作　　者：
内容摘要：表[Coupon]业务操作类
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Eis51.CampanyCMS.Model.Bus;
using System.Data;
using Eis51.CampanyCMS.Access.Bus;
using System.Collections;

namespace Eis51.CampanyCMS.Business.Bus
{
    /// <summary>
	/// Coupon的BLL 自定义方法
	/// 该BLL已经生成了基本的业务操作，在自动生成的方法中已经提供了事务机制
	/// </summary>
    public partial class CouponBLL : BaseBLL<Coupon>
    {

        public bool  Subimt(Coupon o)
        {
            if (o.Couponid > 0)
            {
               return  this.Update(o)>0;
            }
            else
            {
                o.Status = 1;
                o.Createdate = DateTime.Now.ToString("yyyy-MM-dd");
                bool bInsert = this.Insert(o) > 0;
                if (!string.IsNullOrEmpty(o.Username))
                { 
                    Couponused cd=new Couponused() ;
                    cd.Couponno=o.Couponno ;
                    cd.Amount=Convert.ToDouble(o.Amount );
                    cd.Username =o.Username ;
                    CouponusedBLL.GetInstance().Insert(cd);
                }
                return bInsert;
            }
        }

        public DataTable Search(string sdate,string edate,string status,string no )
        {
            if (string.IsNullOrEmpty(sdate))
            {
                sdate = "1901-01-01";
            }

            if (string.IsNullOrEmpty(edate))
            {
                edate = "2099-12-30";
            }
            string sql = "select *   from Coupon  where EndDate between #{0}# and #{1}#   and (CouponNo='{2}' or ''='{2}') ";
            sql = string.Format(sql, sdate, edate, no);
            if (status != "-1")
            {
                sql += " and status=" + status;
            }
            return  this.GetDataTable(sql);
        }

        public Coupon GetCoup(string CouponNo)
        {
            string sql = string.Format("select *  from Coupon where CouponNo='{0}' ", CouponNo);
            DataTable dt = this.GetDataTable(sql);
            if (dt != null && dt.Rows.Count > 0)
            {

                return Coupon.Dr2Obj(dt.Rows[0], Coupon.ColumnNameEnum.DBName);
            
            }
            return null;
        
        }

        public string LiuShuiNo()
        {
            string sql =string .Format ("select CouponNo  from Coupon where CreateDate='{0}' ",DateTime.Now.ToString("yyyy-MM-dd"));
            DataTable dt = this.GetDataTable(sql);
            Int64 maxno = 0;
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                if (dt.Rows[i]["CouponNo"].ToString() != string.Empty)
                {
                    Int64 r = 0;

                    if (Int64.TryParse(dt.Rows[i]["CouponNo"].ToString(), out r))
                    {
                        if (r > maxno)
                               maxno = r;
                    }
                    
                }
            }
            if (maxno == 0)
            {
                return DateTime.Now.ToString("yyyyMMdd") + "00001";
            }
            else
            {
                return (maxno+1).ToString();    
            }
        }

        public void Remove(int couponid)
        {
            Eis51.CampanyCMS.Model.Bus.Coupon del = CouponBLL.GetInstance().Get(new Eis51.CampanyCMS.Model.Bus.Coupon.Key(couponid));
            CouponusedBLL.GetInstance().DeleteByCouponNo(del.Couponno);
            CouponBLL.GetInstance().Delete(del);
        }
		
    }

    #region 代码自动生成
    /// <summary>
    /// Coupon的BLL
    /// 该BLL已经生成了基本的业务操作，在自动生成的方法中已经提供了事务机制
    /// </summary>
    public partial class CouponBLL : BaseBLL<Coupon>
    {
        #region 自动生成代码：取得相关实体

        /// <summary>
        /// 方法名称: CouponBLL
        /// 内容摘要: 构造函数进行初始化
        /// </summary>
        protected CouponBLL()
        {
        }
        private static volatile CouponBLL m_instance = null;
        /// <summary>
        /// 方法名称: GetInstance
        /// 内容摘要: 取得 CouponBLL 对象
        /// </summary>
        /// <returns>返回一个已经存在的实体</returns>
        public static CouponBLL GetInstance()
        {
            // 通用的必要代码 iBatisNet双校检机制,如果实例不存在
            if (m_instance == null)
            {
                lock (typeof(CouponBLL))
                {

                    // 如果实例不存在
                    if (m_instance == null)
                    {

                        // 创建一个的实例
                        m_instance = new CouponBLL();
                    }
                }
            }

            // 返回业务逻辑对象
            return m_instance;
        }

        #endregion

        #region 自动生成代码：基本业务公开函数

        /// <summary>
        /// 方法名称: Get
        /// 内容摘要: 由键值获取一个实体对象
        /// </summary>
        /// <returns>Coupon</returns>
        public Coupon Get(Coupon.Key key)
        {

            return CouponDao.GetInstance().SelectByID(key);
        }
        /// <summary>
        /// 方法名称: Select
        /// 内容摘要: 基本查询，不带任何条件的查询
        /// </summary>
        public IList Select()
        {
            return CouponDao.GetInstance().SelectAll();
        }
        /// <summary>
        /// 方法名称: Insert
        /// 内容摘要: 插入一条新纪录
        /// </summary>
        /// <returns>int</returns>
        public int Insert(Coupon obj)
        {
            int result = 0;
            try
            {
                result = CouponDao.GetInstance().Insert(obj);
            }
            catch (Exception e)
            {
                throw e;
            }
            return result;
        }

        /// <summary>
        /// 方法名称: Update
        /// 内容摘要: 更新一条新纪录
        /// </summary>
        /// <returns>int</returns>
        public int Update(Coupon obj)
        {
            CouponDao.GetInstance().Update(obj);
            return 1;
        }

        /// <summary>
        /// 方法名称: Delete
        /// 内容摘要: 删除一条新纪录
        /// </summary>
        /// <returns>int</returns>
        public int Delete(Coupon obj)
        {
            bool result = CouponDao.GetInstance().DeleteByID(new Coupon.Key(obj.Couponid));
            return result ? 1 : 0;
        }

        #endregion

    }
    #endregion
}